package com.example.demotest.repository;

import com.example.demotest.pojo.User;
import com.example.demotest.pojo.Product;
import com.example.demotest.pojo.ProductFavorite;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.List;
import java.util.Optional;

public interface ProductFavoriteRepository extends JpaRepository<ProductFavorite, Integer> {

    // 查询用户收藏商品
    List<ProductFavorite> findByUser(User user);

    // 查找某个商品被哪些用户收藏了
    List<ProductFavorite> findByProduct(Product product);

    // 查找某个用户是否收藏了某个商品
    Optional<ProductFavorite> findByUserAndProduct(User user, Product product);

    // 删除用户对商品的收藏记录
    void deleteByUserAndProduct(User user, Product product);

    // 更新商品类的收藏数属性
    @Modifying
    @Query("UPDATE Product p SET p.favoriteCount = p.favoriteCount + :delta WHERE p.productID = :productId")
    void updateFavoriteCount(@Param("productId") Integer productId, @Param("delta") int delta);

    boolean existsByUser_UserIdAndProduct_ProductID(Integer userId, Integer productId);

}
